Clustering of computer systems is becoming an increasingly popular way for enterprises and large businesses to ensure greater availability to multiple users. Different types of clusters have evolved, including high availability clusters, high performance clusters, load balanced clusters, and the like. Example of clustering systems include the Veritas™ Cluster Server, HP™ Serviceguard, and/or Microsoft™ Cluster Server.
Clusters are a class of coupled distributed systems that provide high availability for applications typically by using hardware redundancy to recover from single points of failure. Clusters typically include multiple nodes that interact with each other to provide users with various applications and system resources and may appear to the user as a single entity. Each node typically runs a local operating system kernel.
In the event of a hardware or software failure, the cluster automatically restarts applications on the same node or “fails over” (e.g., restarts applications on a different node) the applications in order to keep applications available to clients of the cluster. Conventionally, the cluster software is responsible for managing the identification of the nodes of the cluster, the starting/restarting applications on one or more nodes of the cluster, or the like.
While clusters provide high performance and availability, their management may be complex, and they may be tied to a specific communication infrastructure. Moreover, clusters may not be able to interoperate because they may use different communication infrastructures, for example. It is with respect to this consideration and others that the current invention is directed.